forked from boostorg/fusion
More constexpr and noexcept support.
Note 1: Forwarding functions are specified as a C++14 constexpr since std::forward is not a constexpr within C++11. Note 2: Though I'm not sure why it doesn't compile, some declarations are specified as a C++14 constexpr or non-constexpr. Note 3: Boost.Tuple adaptation and TR1-based tuple implementations are not constexpr.
This commit is contained in:
@ -59,7 +59,7 @@ namespace boost { namespace fusion
|
||||
// never called, but needed for decltype-based result_of (C++0x)
|
||||
#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
|
||||
template<typename StrictestSoFar, typename Next>
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
typename result<strictest_traversal_impl(StrictestSoFar, Next)>::type
|
||||
operator()(StrictestSoFar&&, Next&&) const;
|
||||
#endif
|
||||
|
@ -31,7 +31,7 @@ namespace boost { namespace fusion
|
||||
typedef typename Sequence::category category;
|
||||
typedef filter_iterator<category, first_type, last_type, pred_type> type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Sequence& s)
|
||||
{
|
||||
|
@ -26,7 +26,7 @@ namespace boost { namespace fusion { namespace extension
|
||||
result_of::deref_data<typename It::first_type>::type
|
||||
type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(It const& it)
|
||||
{
|
||||
|
@ -30,7 +30,7 @@ namespace boost { namespace fusion
|
||||
typedef typename Sequence::category category;
|
||||
typedef filter_iterator<category,last_type, last_type, pred_type> type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Sequence& s)
|
||||
{
|
||||
|
@ -63,7 +63,7 @@ namespace boost { namespace fusion
|
||||
category, typename filter::type, last_type, pred_type>
|
||||
type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Iterator const& i)
|
||||
{
|
||||
|
@ -46,14 +46,14 @@ namespace boost { namespace fusion
|
||||
typedef typename result_of::end<Sequence>::type last_type;
|
||||
typedef Pred pred_type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
filter_view(Sequence& in_seq)
|
||||
: seq(in_seq)
|
||||
{}
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
first_type first() const { return fusion::begin(seq); }
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
last_type last() const { return fusion::end(seq); }
|
||||
typename mpl::if_<traits::is_view<Sequence>, Sequence, Sequence&>::type seq;
|
||||
|
||||
|
@ -55,7 +55,7 @@ namespace boost { namespace fusion
|
||||
typedef last_iter last_type;
|
||||
typedef Pred pred_type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
filter_iterator(First const& in_first)
|
||||
: first(filter::iter_call(first_converter::call(in_first))) {}
|
||||
|
||||
|
@ -8,6 +8,7 @@
|
||||
#define BOOST_FUSION_FLATTEN_VIEW_HPP_INCLUDED
|
||||
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/mpl/bool.hpp>
|
||||
#include <boost/mpl/single_view.hpp>
|
||||
#include <boost/fusion/support/detail/access.hpp>
|
||||
@ -23,7 +24,7 @@ namespace boost { namespace fusion
|
||||
{
|
||||
struct forward_traversal_tag;
|
||||
struct flatten_view_tag;
|
||||
|
||||
|
||||
template <typename Sequence>
|
||||
struct flatten_view
|
||||
: sequence_base<flatten_view<Sequence> >
|
||||
@ -32,18 +33,21 @@ namespace boost { namespace fusion
|
||||
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<Sequence>::type first_type;
|
||||
typedef typename result_of::end<Sequence>::type last_type;
|
||||
|
||||
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
explicit flatten_view(Sequence& seq)
|
||||
: seq(seq)
|
||||
{}
|
||||
|
||||
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
first_type first() const { return fusion::begin(seq); }
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
last_type last() const { return fusion::end(seq); }
|
||||
|
||||
|
||||
typename mpl::if_<traits::is_view<Sequence>, Sequence, Sequence&>::type seq;
|
||||
};
|
||||
}}
|
||||
@ -57,19 +61,20 @@ namespace boost { namespace fusion { namespace extension
|
||||
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<root_iterator, first_type>
|
||||
seek_descent;
|
||||
|
||||
|
||||
typedef typename seek_descent::type type;
|
||||
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static inline
|
||||
type call(Sequence& seq)
|
||||
{
|
||||
@ -77,7 +82,7 @@ namespace boost { namespace fusion { namespace extension
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
template<>
|
||||
struct end_impl<flatten_view_tag>
|
||||
{
|
||||
@ -85,13 +90,14 @@ namespace boost { namespace fusion { namespace extension
|
||||
struct apply
|
||||
{
|
||||
typedef typename Sequence::last_type last_type;
|
||||
|
||||
|
||||
typedef typename
|
||||
result_of::end<
|
||||
mpl::single_view<
|
||||
typename Sequence::sequence_type> >::type
|
||||
type;
|
||||
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static inline
|
||||
type call(Sequence&)
|
||||
{
|
||||
|
@ -8,6 +8,7 @@
|
||||
#define BOOST_FUSION_FLATTEN_VIEW_ITERATOR_HPP_INCLUDED
|
||||
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/mpl/bool.hpp>
|
||||
#include <boost/mpl/eval_if.hpp>
|
||||
#include <boost/type_traits/remove_reference.hpp>
|
||||
@ -23,22 +24,23 @@ namespace boost { namespace fusion
|
||||
{
|
||||
struct forward_traversal_tag;
|
||||
struct flatten_view_iterator_tag;
|
||||
|
||||
|
||||
template<class First, class Base>
|
||||
struct flatten_view_iterator
|
||||
: iterator_base<flatten_view_iterator<First, Base> >
|
||||
{
|
||||
typedef flatten_view_iterator_tag fusion_tag;
|
||||
typedef forward_traversal_tag category;
|
||||
|
||||
|
||||
typedef convert_iterator<First> first_converter;
|
||||
typedef typename first_converter::type first_type;
|
||||
typedef Base base_type;
|
||||
|
||||
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
flatten_view_iterator(First const& first, Base const& base)
|
||||
: first(first), base(base)
|
||||
{}
|
||||
|
||||
|
||||
first_type first;
|
||||
base_type base;
|
||||
};
|
||||
@ -50,13 +52,14 @@ namespace boost { namespace fusion { namespace detail
|
||||
struct make_descent_cons
|
||||
{
|
||||
typedef cons<Iterator> type;
|
||||
|
||||
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static inline type apply(Iterator const& it)
|
||||
{
|
||||
return type(it);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
template<class Iterator>
|
||||
struct make_descent_cons<Iterator,
|
||||
typename enable_if<traits::is_sequence<
|
||||
@ -67,20 +70,21 @@ namespace boost { namespace fusion { namespace detail
|
||||
typedef typename
|
||||
remove_reference<typename result_of::deref<Iterator>::type>::type
|
||||
sub_sequence;
|
||||
|
||||
|
||||
typedef typename
|
||||
result_of::begin<sub_sequence>::type
|
||||
sub_begin;
|
||||
|
||||
|
||||
typedef cons<Iterator, typename make_descent_cons<sub_begin>::type> type;
|
||||
|
||||
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static inline type apply(Iterator const& it)
|
||||
{
|
||||
return type(it, make_descent_cons<sub_begin>::apply(
|
||||
fusion::begin(*it)));
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
template<class Cons, class Base>
|
||||
struct build_flatten_view_iterator;
|
||||
|
||||
@ -88,26 +92,28 @@ namespace boost { namespace fusion { namespace detail
|
||||
struct build_flatten_view_iterator<cons<Car>, Base>
|
||||
{
|
||||
typedef flatten_view_iterator<Car, Base> type;
|
||||
|
||||
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static inline type apply(cons<Car> const& cons, Base const& base)
|
||||
{
|
||||
return type(cons.car, base);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
template<class Car, class Cdr, class Base>
|
||||
struct build_flatten_view_iterator<cons<Car, Cdr>, Base>
|
||||
{
|
||||
typedef flatten_view_iterator<Car, Base> next_base;
|
||||
typedef build_flatten_view_iterator<Cdr, next_base> next;
|
||||
typedef typename next::type type;
|
||||
|
||||
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static inline type apply(cons<Car, Cdr> const& cons, Base const& base)
|
||||
{
|
||||
return next::apply(cons.cdr, next_base(cons.car, base));
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
template<class Base, class Iterator, class = void>
|
||||
struct seek_descent
|
||||
{
|
||||
@ -117,14 +123,15 @@ namespace boost { namespace fusion { namespace detail
|
||||
build_flatten_view_iterator<cons_type, Base>
|
||||
build_flatten_view_iterator_;
|
||||
typedef typename build_flatten_view_iterator_::type type;
|
||||
|
||||
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static inline type apply(Base const& base, Iterator const& it)
|
||||
{
|
||||
return build_flatten_view_iterator_::apply(
|
||||
make_descent_cons_::apply(it), base);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
template<class Base, class Iterator>
|
||||
struct seek_descent<Base, Iterator,
|
||||
typename enable_if<
|
||||
@ -132,7 +139,8 @@ namespace boost { namespace fusion { namespace detail
|
||||
typename result_of::value_of<Base>::type>::type> >::type>
|
||||
{
|
||||
typedef typename result_of::next<Base>::type type;
|
||||
|
||||
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static inline type apply(Base const& base, Iterator const&)
|
||||
{
|
||||
return fusion::next(base);
|
||||
@ -151,10 +159,11 @@ namespace boost { namespace fusion { namespace extension
|
||||
typedef typename Iterator::first_type first_type;
|
||||
typedef typename Iterator::base_type base_type;
|
||||
typedef typename result_of::next<first_type>::type next_type;
|
||||
|
||||
|
||||
typedef detail::seek_descent<base_type, next_type> seek_descent;
|
||||
typedef typename seek_descent::type type;
|
||||
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static inline
|
||||
type call(Iterator const& it)
|
||||
{
|
||||
@ -162,7 +171,7 @@ namespace boost { namespace fusion { namespace extension
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
template<>
|
||||
struct deref_impl<flatten_view_iterator_tag>
|
||||
{
|
||||
@ -173,6 +182,7 @@ namespace boost { namespace fusion { namespace extension
|
||||
result_of::deref<typename Iterator::first_type>::type
|
||||
type;
|
||||
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static inline
|
||||
type call(Iterator const& it)
|
||||
{
|
||||
@ -180,13 +190,13 @@ namespace boost { namespace fusion { namespace extension
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
template<>
|
||||
struct value_of_impl<flatten_view_iterator_tag>
|
||||
{
|
||||
template<typename Iterator>
|
||||
struct apply
|
||||
{
|
||||
{
|
||||
typedef typename
|
||||
result_of::value_of<typename Iterator::first_type>::type
|
||||
type;
|
||||
|
@ -31,7 +31,7 @@ namespace boost { namespace fusion
|
||||
typedef typename result_of::advance<begin_type,N>::type pos;
|
||||
typedef typename result_of::deref<pos>::type type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Seq& s)
|
||||
{
|
||||
|
@ -7,6 +7,8 @@
|
||||
#if !defined(FUSION_BEGIN_IMPL_05062005_1226)
|
||||
#define FUSION_BEGIN_IMPL_05062005_1226
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
struct iterator_range_tag;
|
||||
@ -24,7 +26,7 @@ namespace boost { namespace fusion
|
||||
{
|
||||
typedef typename Sequence::begin_type type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Sequence& s)
|
||||
{
|
||||
|
@ -7,6 +7,8 @@
|
||||
#if !defined(FUSION_END_IMPL_05062005_1226)
|
||||
#define FUSION_END_IMPL_05062005_1226
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
struct iterator_range_tag;
|
||||
@ -24,7 +26,7 @@ namespace boost { namespace fusion
|
||||
{
|
||||
typedef typename Sequence::end_type type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Sequence& s)
|
||||
{
|
||||
|
@ -48,7 +48,7 @@ namespace boost { namespace fusion
|
||||
}
|
||||
|
||||
template <typename Sequence, typename T>
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
inline typename
|
||||
lazy_enable_if<
|
||||
traits::is_sequence<Sequence>
|
||||
@ -57,7 +57,7 @@ namespace boost { namespace fusion
|
||||
push_back(Sequence const& seq, T const& x);
|
||||
|
||||
template <typename Sequence, typename T>
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
inline typename
|
||||
lazy_enable_if<
|
||||
traits::is_sequence<Sequence>
|
||||
@ -152,7 +152,7 @@ namespace boost { namespace fusion { namespace detail
|
||||
>
|
||||
type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type call(Stack const& stack)
|
||||
{
|
||||
//return segment_sequence(
|
||||
@ -199,7 +199,7 @@ namespace boost { namespace fusion { namespace detail
|
||||
>
|
||||
type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type call(Stack const& stack)
|
||||
{
|
||||
// return iterator_range(begin(car(cdr(stack_begin))), end(front(car(stack_begin))));
|
||||
@ -212,7 +212,7 @@ namespace boost { namespace fusion { namespace detail
|
||||
{
|
||||
typedef typename Stack::cdr_type type; // nil_
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type call(Stack const &stack)
|
||||
{
|
||||
return stack.cdr;
|
||||
@ -298,7 +298,7 @@ namespace boost { namespace fusion { namespace detail
|
||||
>
|
||||
type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type call(Stack const& stack)
|
||||
{
|
||||
// return segment_sequence(
|
||||
@ -345,7 +345,7 @@ namespace boost { namespace fusion { namespace detail
|
||||
>
|
||||
type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type call(Stack const& stack)
|
||||
{
|
||||
// return iterator_range(begin(front(car(stack_end))), begin(car(cdr(stack_end))));
|
||||
@ -358,7 +358,7 @@ namespace boost { namespace fusion { namespace detail
|
||||
{
|
||||
typedef typename Stack::cdr_type type; // nil_
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type call(Stack const& stack)
|
||||
{
|
||||
return stack.cdr;
|
||||
@ -437,7 +437,7 @@ namespace boost { namespace fusion { namespace detail
|
||||
>
|
||||
type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type call(StackBegin stack_begin, StackEnd stack_end)
|
||||
{
|
||||
//return segment_sequence(
|
||||
@ -471,7 +471,7 @@ namespace boost { namespace fusion { namespace detail
|
||||
typename impl::type
|
||||
type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type call(StackBegin stack_begin, StackEnd stack_end)
|
||||
{
|
||||
return impl::call(stack_begin.cdr, stack_end.cdr);
|
||||
@ -501,7 +501,7 @@ namespace boost { namespace fusion { namespace detail
|
||||
segment_sequence<segment_type>
|
||||
type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type call(StackBegin stack_begin, StackEnd stack_end)
|
||||
{
|
||||
//return segment_sequence(
|
||||
@ -531,7 +531,7 @@ namespace boost { namespace fusion { namespace detail
|
||||
|
||||
typedef typename impl::type type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type call(Begin const& begin, End const& end)
|
||||
{
|
||||
return impl::call(
|
||||
|
@ -41,7 +41,7 @@ namespace boost { namespace fusion
|
||||
typename result_of::segments<typename impl::type>::type
|
||||
type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type call(Sequence & seq)
|
||||
{
|
||||
return fusion::segments(impl::call(seq.first, seq.last));
|
||||
|
@ -44,7 +44,7 @@ namespace boost { namespace fusion
|
||||
|
||||
typedef typename traits::category_of<begin_type>::type category;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
iterator_range(First const& in_first, Last const& in_last)
|
||||
: first(convert_iterator<First>::call(in_first))
|
||||
, last(convert_iterator<Last>::call(in_last)) {}
|
||||
|
@ -43,21 +43,21 @@ namespace boost { namespace fusion
|
||||
>::type
|
||||
type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Sequence& s, mpl::true_)
|
||||
{
|
||||
return s.concat();
|
||||
}
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Sequence& s, mpl::false_)
|
||||
{
|
||||
return type(s.first(), s.concat());
|
||||
}
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Sequence& s)
|
||||
{
|
||||
|
@ -26,7 +26,7 @@ namespace boost { namespace fusion { namespace extension
|
||||
result_of::deref_data<typename It::first_type>::type
|
||||
type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(It const& it)
|
||||
{
|
||||
|
@ -28,7 +28,7 @@ namespace boost { namespace fusion
|
||||
{
|
||||
typedef typename Sequence::concat_last_type type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Sequence& s)
|
||||
{
|
||||
|
@ -45,21 +45,21 @@ namespace boost { namespace fusion
|
||||
>::type
|
||||
type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Iterator const& i, mpl::true_)
|
||||
{
|
||||
return i.concat;
|
||||
}
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Iterator const& i, mpl::false_)
|
||||
{
|
||||
return type(fusion::next(i.first), i.concat);
|
||||
}
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Iterator const& i)
|
||||
{
|
||||
|
@ -56,17 +56,17 @@ namespace boost { namespace fusion
|
||||
result_of::size<Sequence1>::value + result_of::size<Sequence2>::value>
|
||||
size;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
joint_view(Sequence1& in_seq1, Sequence2& in_seq2)
|
||||
: seq1(in_seq1)
|
||||
, seq2(in_seq2)
|
||||
{}
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
first_type first() const { return fusion::begin(seq1); }
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
concat_type concat() const { return fusion::begin(seq2); }
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
concat_last_type concat_last() const { return fusion::end(seq2); }
|
||||
|
||||
private:
|
||||
|
@ -41,7 +41,7 @@ namespace boost { namespace fusion
|
||||
typedef Category category;
|
||||
BOOST_STATIC_ASSERT((!result_of::equal_to<first_type, last_type>::value));
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR 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))
|
||||
|
@ -12,7 +12,7 @@
|
||||
#include <boost/mpl/advance.hpp>
|
||||
#include <boost/fusion/iterator/advance.hpp>
|
||||
|
||||
namespace boost { namespace fusion
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
struct nview_iterator_tag;
|
||||
|
||||
@ -36,7 +36,7 @@ namespace boost { namespace fusion
|
||||
typedef nview_iterator<sequence_type,
|
||||
typename mpl::advance<iterator_type, Dist>::type> type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Iterator const& i)
|
||||
{
|
||||
|
@ -11,7 +11,7 @@
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/fusion/sequence/intrinsic/at.hpp>
|
||||
|
||||
namespace boost { namespace fusion
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
struct nview_tag;
|
||||
|
||||
@ -32,8 +32,8 @@ namespace boost { namespace fusion
|
||||
typedef typename result_of::at<index_type, N>::type index;
|
||||
typedef typename result_of::at<sequence_type, index>::type type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Sequence& seq)
|
||||
{
|
||||
return fusion::at<index>(seq.seq);
|
||||
|
@ -35,7 +35,7 @@ namespace boost { namespace fusion
|
||||
typedef nview_iterator<Sequence,
|
||||
typename mpl::begin<index_type>::type> type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type call(Sequence& s)
|
||||
{
|
||||
return type(s);
|
||||
|
@ -34,7 +34,7 @@ namespace boost { namespace fusion
|
||||
typedef typename result_of::at<
|
||||
typename sequence_type::sequence_type, index>::type type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type call(Iterator const& i)
|
||||
{
|
||||
return at<index>(i.seq.seq);
|
||||
|
@ -31,7 +31,7 @@ namespace boost { namespace fusion
|
||||
typename First::first_type, typename Last::first_type
|
||||
>::type type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(First const& /*first*/, Last const& /*last*/)
|
||||
{
|
||||
|
@ -36,7 +36,7 @@ namespace boost { namespace fusion
|
||||
typedef nview_iterator<Sequence,
|
||||
typename mpl::end<index_type>::type> type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type call(Sequence& s)
|
||||
{
|
||||
return type(s);
|
||||
|
@ -35,7 +35,7 @@ namespace boost { namespace fusion
|
||||
typedef nview_iterator<sequence_type,
|
||||
typename mpl::next<first_type>::type> type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Iterator const& i)
|
||||
{
|
||||
|
@ -63,7 +63,7 @@ namespace boost { namespace fusion { namespace result_of
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
template<BOOST_PP_ENUM_PARAMS(N, int I), typename Sequence>
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
inline nview<Sequence, mpl::vector_c<int, BOOST_PP_ENUM_PARAMS(N, I)> >
|
||||
as_nview(Sequence& s)
|
||||
{
|
||||
|
@ -35,7 +35,7 @@ namespace boost { namespace fusion
|
||||
typedef nview_iterator<sequence_type,
|
||||
typename mpl::prior<first_type>::type> type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Iterator const& i)
|
||||
{
|
||||
|
@ -40,7 +40,7 @@ namespace boost { namespace fusion
|
||||
|
||||
#ifdef BOOST_NO_CXX11_RVALUE_REFERENCES
|
||||
template <typename T>
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
typename add_reference<T>::type
|
||||
operator()(T& x) const
|
||||
{
|
||||
@ -48,7 +48,7 @@ namespace boost { namespace fusion
|
||||
}
|
||||
#else
|
||||
template <typename T>
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
typename result<addref(T)>::type
|
||||
operator()(T&& x) const
|
||||
{
|
||||
@ -68,7 +68,7 @@ namespace boost { namespace fusion
|
||||
{};
|
||||
|
||||
template <typename T>
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
typename add_reference<typename add_const<T>::type>::type
|
||||
operator()(T& x) const
|
||||
{
|
||||
@ -76,7 +76,7 @@ namespace boost { namespace fusion
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
typename add_reference<typename add_const<T>::type>::type
|
||||
operator()(T const& x) const
|
||||
{
|
||||
@ -108,7 +108,8 @@ namespace boost { namespace fusion
|
||||
typedef typename result_of::as_vector<transform_view_type>::type
|
||||
sequence_type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED explicit nview(Sequence& val)
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
explicit nview(Sequence& val)
|
||||
: seq(sequence_type(transform_view_type(val, transform_type())))
|
||||
{}
|
||||
|
||||
|
@ -42,7 +42,8 @@ namespace boost { namespace fusion
|
||||
typedef Sequence sequence_type;
|
||||
typedef mpl_iterator<Pos> first_type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED explicit nview_iterator(Sequence& in_seq)
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
explicit nview_iterator(Sequence& in_seq)
|
||||
: seq(in_seq) {}
|
||||
|
||||
Sequence& seq;
|
||||
|
@ -35,7 +35,7 @@ namespace boost { namespace fusion
|
||||
typedef repetitive_view_iterator<sequence_type,
|
||||
typename result_of::begin<sequence_type>::type > type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type call(View const& v)
|
||||
{
|
||||
return type(v.seq);
|
||||
|
@ -30,7 +30,7 @@ namespace boost { namespace fusion
|
||||
result_of::deref<typename Iterator::pos_type>::type
|
||||
type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type call(Iterator const& i)
|
||||
{
|
||||
return *i.pos;
|
||||
|
@ -35,7 +35,7 @@ namespace boost { namespace fusion
|
||||
typedef repetitive_view_iterator<sequence_type,
|
||||
typename result_of::end<sequence_type>::type > type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type call(View const& v)
|
||||
{
|
||||
return type(v.seq,end(v.seq));
|
||||
|
@ -42,7 +42,7 @@ namespace boost { namespace fusion
|
||||
>
|
||||
type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type call(Iterator const& i)
|
||||
{
|
||||
return type(i.seq, next(i.pos));
|
||||
@ -59,7 +59,7 @@ namespace boost { namespace fusion
|
||||
>
|
||||
type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type call(Iterator const& i)
|
||||
{
|
||||
return type(i.seq);
|
||||
@ -80,7 +80,7 @@ namespace boost { namespace fusion
|
||||
|
||||
typedef Iterator type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type call(Iterator const& i)
|
||||
{
|
||||
return type(i);
|
||||
|
@ -38,7 +38,7 @@ namespace boost { namespace fusion
|
||||
mpl::if_<traits::is_view<Sequence>, Sequence, sequence_type&>::type
|
||||
stored_seq_type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
repetitive_view(Sequence& in_seq)
|
||||
: seq(in_seq) {}
|
||||
|
||||
|
@ -36,16 +36,16 @@ namespace boost { namespace fusion
|
||||
typedef typename convert_iterator<typename result_of::end<Sequence>::type>::type end_type;
|
||||
typedef single_pass_traversal_tag category;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED explicit repetitive_view_iterator(Sequence& in_seq)
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
explicit repetitive_view_iterator(Sequence& in_seq)
|
||||
: seq(in_seq), pos(begin(in_seq)) {}
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
repetitive_view_iterator(Sequence& in_seq, pos_type const& in_pos)
|
||||
: seq(in_seq), pos(in_pos) {}
|
||||
|
||||
Sequence& seq;
|
||||
pos_type pos;
|
||||
|
||||
|
||||
private:
|
||||
// silence MSVC warning C4512: assignment operator could not be generated
|
||||
|
@ -35,7 +35,7 @@ namespace boost { namespace fusion {
|
||||
typedef typename result_of::advance<first_type, negative_dist>::type advanced_type;
|
||||
typedef reverse_view_iterator<advanced_type> type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Iterator const& i)
|
||||
{
|
||||
|
@ -30,7 +30,7 @@ namespace boost { namespace fusion { namespace extension
|
||||
result_of::at<typename Seq::seq_type, real_n>::type
|
||||
type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Seq& seq)
|
||||
{
|
||||
|
@ -27,7 +27,7 @@ namespace boost { namespace fusion
|
||||
{
|
||||
typedef reverse_view_iterator<typename Sequence::last_type> type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Sequence const& s)
|
||||
{
|
||||
|
@ -26,7 +26,7 @@ namespace boost { namespace fusion { namespace extension
|
||||
result_of::deref_data<typename It::first_type>::type
|
||||
type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(It const& it)
|
||||
{
|
||||
|
@ -34,7 +34,7 @@ namespace boost { namespace fusion
|
||||
>::type
|
||||
type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Iterator const& i)
|
||||
{
|
||||
|
@ -33,7 +33,7 @@ namespace boost { namespace fusion {
|
||||
typedef typename Last::first_type last_type;
|
||||
typedef typename result_of::distance<last_type, first_type>::type type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(First const& first, Last const& last)
|
||||
{
|
||||
|
@ -27,7 +27,7 @@ namespace boost { namespace fusion
|
||||
{
|
||||
typedef reverse_view_iterator<typename Sequence::first_type> type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Sequence const& s)
|
||||
{
|
||||
|
@ -33,7 +33,7 @@ namespace boost { namespace fusion
|
||||
|
||||
typedef reverse_view_iterator<typename wrapped::type> type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Iterator const& i)
|
||||
{
|
||||
|
@ -33,7 +33,7 @@ namespace boost { namespace fusion
|
||||
|
||||
typedef reverse_view_iterator<typename wrapped::type> type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Iterator const& i)
|
||||
{
|
||||
|
@ -50,14 +50,14 @@ namespace boost { namespace fusion
|
||||
bidirectional_traversal_tag
|
||||
, typename traits::category_of<first_type>::type>::value));
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
reverse_view(Sequence& in_seq)
|
||||
: seq(in_seq)
|
||||
{}
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
first_type first() const { return fusion::begin(seq); }
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
last_type last() const { return fusion::end(seq); }
|
||||
typename mpl::if_<traits::is_view<Sequence>, Sequence, Sequence&>::type seq;
|
||||
|
||||
|
@ -42,7 +42,7 @@ namespace boost { namespace fusion
|
||||
bidirectional_traversal_tag
|
||||
, category>::value));
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
reverse_view_iterator(First const& in_first)
|
||||
: first(converter::call(in_first)) {}
|
||||
|
||||
|
@ -34,7 +34,7 @@ namespace boost { namespace fusion
|
||||
typename mpl::plus<typename Iterator::position, Dist>::type>
|
||||
type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Iterator const& i)
|
||||
{
|
||||
|
@ -31,7 +31,7 @@ namespace boost { namespace fusion
|
||||
BOOST_MPL_ASSERT((mpl::equal_to<N, mpl::int_<0> >));
|
||||
typedef typename Sequence::value_type type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Sequence& seq)
|
||||
{
|
||||
|
@ -31,7 +31,7 @@ namespace boost { namespace fusion
|
||||
{
|
||||
typedef single_view_iterator<Sequence, mpl::int_<0> > type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Sequence& seq)
|
||||
{
|
||||
|
@ -31,7 +31,7 @@ namespace boost { namespace fusion
|
||||
BOOST_MPL_ASSERT((mpl::equal_to<typename Iterator::position, mpl::int_<0> >));
|
||||
typedef typename Iterator::value_type type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Iterator const& i)
|
||||
{
|
||||
|
@ -30,7 +30,7 @@ namespace boost { namespace fusion
|
||||
typedef typename mpl::minus<typename Last::position,
|
||||
typename First::position>::type type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(First const& /*first*/, Last const& /*last*/)
|
||||
{
|
||||
|
@ -31,7 +31,7 @@ namespace boost { namespace fusion
|
||||
{
|
||||
typedef single_view_iterator<Sequence, mpl::int_<1> > type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Sequence& seq)
|
||||
{
|
||||
|
@ -35,7 +35,7 @@ namespace boost { namespace fusion
|
||||
typename mpl::next<typename Iterator::position>::type>
|
||||
type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Iterator const& i)
|
||||
{
|
||||
|
@ -33,7 +33,7 @@ namespace boost { namespace fusion
|
||||
typename mpl::prior<typename Iterator::position>::type>
|
||||
type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Iterator const& i)
|
||||
{
|
||||
|
@ -43,18 +43,19 @@ namespace boost { namespace fusion
|
||||
typedef mpl::int_<1> size;
|
||||
typedef T value_type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
single_view()
|
||||
: val() {}
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED explicit single_view(typename detail::call_param<T>::type in_val)
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
explicit single_view(typename detail::call_param<T>::type in_val)
|
||||
: val(in_val) {}
|
||||
|
||||
value_type val;
|
||||
};
|
||||
|
||||
template <typename T>
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
inline single_view<typename detail::as_fusion_element<T>::type>
|
||||
make_single_view(T const& v)
|
||||
{
|
||||
|
@ -40,7 +40,8 @@ namespace boost { namespace fusion
|
||||
typedef Pos position;
|
||||
typedef SingleView single_view_type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED explicit single_view_iterator(single_view_type& in_view)
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
explicit single_view_iterator(single_view_type& in_view)
|
||||
: view(in_view) {}
|
||||
|
||||
SingleView& view;
|
||||
|
@ -39,7 +39,7 @@ namespace boost { namespace fusion
|
||||
typedef typename Iterator::transform_type transform_type;
|
||||
typedef transform_view_iterator<advanced_type, transform_type> type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Iterator const& i)
|
||||
{
|
||||
@ -62,7 +62,7 @@ namespace boost { namespace fusion
|
||||
typedef typename Iterator::transform_type transform_type;
|
||||
typedef transform_view_iterator2<advanced1_type, advanced2_type, transform_type> type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Iterator const& i)
|
||||
{
|
||||
|
@ -33,7 +33,7 @@ namespace boost { namespace fusion {
|
||||
typedef typename boost::fusion::result_of::at<typename Seq::sequence_type, N>::type value_type;
|
||||
typedef typename mpl::apply<transform_type, value_type>::type type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type call(Seq& seq)
|
||||
{
|
||||
return seq.f(boost::fusion::at<N>(seq.seq));
|
||||
@ -53,7 +53,7 @@ namespace boost { namespace fusion {
|
||||
typedef typename boost::fusion::result_of::at<typename Seq::sequence2_type, N>::type value2_type;
|
||||
typedef typename mpl::apply<transform_type, value1_type, value2_type>::type type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type call(Seq& seq)
|
||||
{
|
||||
return seq.f(boost::fusion::at<N>(seq.seq1), boost::fusion::at<N>(seq.seq2));
|
||||
|
@ -34,7 +34,7 @@ namespace boost { namespace fusion
|
||||
typedef typename Sequence::transform_type transform_type;
|
||||
typedef transform_view_iterator<first_type, transform_type> type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Sequence& s)
|
||||
{
|
||||
@ -55,7 +55,7 @@ namespace boost { namespace fusion
|
||||
typedef typename Sequence::transform_type transform_type;
|
||||
typedef transform_view_iterator2<first1_type, first2_type, transform_type> type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Sequence& s)
|
||||
{
|
||||
|
@ -37,7 +37,7 @@ namespace boost { namespace fusion
|
||||
typedef detail::apply_transform_result<typename Iterator::transform_type> transform_type;
|
||||
typedef typename mpl::apply<transform_type, value_type>::type type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Iterator const& i)
|
||||
{
|
||||
@ -63,7 +63,7 @@ namespace boost { namespace fusion
|
||||
typedef detail::apply_transform_result<typename Iterator::transform_type> transform_type;
|
||||
typedef typename mpl::apply<transform_type, value1_type, value2_type>::type type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Iterator const& i)
|
||||
{
|
||||
|
@ -29,7 +29,7 @@ namespace boost { namespace fusion {
|
||||
struct apply
|
||||
: result_of::distance<typename First::first_type, typename Last::first_type>
|
||||
{
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static
|
||||
typename result_of::distance<typename First::first_type, typename Last::first_type>::type
|
||||
call(First const& first, Last const& last)
|
||||
@ -47,7 +47,7 @@ namespace boost { namespace fusion {
|
||||
struct apply
|
||||
: result_of::distance<typename First::first1_type, typename Last::first1_type>
|
||||
{
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static
|
||||
typename result_of::distance<typename First::first1_type, typename Last::first1_type>::type
|
||||
call(First const& first, Last const& last)
|
||||
|
@ -34,7 +34,7 @@ namespace boost { namespace fusion
|
||||
typedef typename Sequence::transform_type transform_type;
|
||||
typedef transform_view_iterator<last_type, transform_type> type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Sequence& s)
|
||||
{
|
||||
@ -55,7 +55,7 @@ namespace boost { namespace fusion
|
||||
typedef typename Sequence::transform_type transform_type;
|
||||
typedef transform_view_iterator2<last1_type, last2_type, transform_type> type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Sequence& s)
|
||||
{
|
||||
|
@ -38,7 +38,7 @@ namespace boost { namespace fusion
|
||||
typedef typename Iterator::transform_type transform_type;
|
||||
typedef transform_view_iterator<next_type, transform_type> type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Iterator const& i)
|
||||
{
|
||||
@ -61,7 +61,7 @@ namespace boost { namespace fusion
|
||||
typedef typename Iterator::transform_type transform_type;
|
||||
typedef transform_view_iterator2<next1_type, next2_type, transform_type> type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Iterator const& i)
|
||||
{
|
||||
|
@ -39,7 +39,7 @@ namespace boost { namespace fusion
|
||||
typedef typename Iterator::transform_type transform_type;
|
||||
typedef transform_view_iterator<prior_type, transform_type> type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Iterator const& i)
|
||||
{
|
||||
@ -62,7 +62,7 @@ namespace boost { namespace fusion
|
||||
typedef typename Iterator::transform_type transform_type;
|
||||
typedef transform_view_iterator2<prior1_type, prior2_type, transform_type> type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Iterator const& i)
|
||||
{
|
||||
|
@ -56,20 +56,20 @@ namespace boost { namespace fusion
|
||||
typedef Sequence2 sequence2_type;
|
||||
typedef F transform_type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR 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
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
first1_type first1() const { return fusion::begin(seq1); }
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
first2_type first2() const { return fusion::begin(seq2); }
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
last1_type last1() const { return fusion::end(seq1); }
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
last2_type last2() const { return fusion::end(seq2); }
|
||||
|
||||
transform_type f;
|
||||
@ -100,15 +100,15 @@ namespace boost { namespace fusion
|
||||
typedef Sequence sequence_type;
|
||||
typedef F transform_type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
transform_view(Sequence& in_seq, F const& in_f)
|
||||
: seq(in_seq)
|
||||
, f(in_f)
|
||||
{}
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
first_type first() const { return fusion::begin(seq); }
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
last_type last() const { return fusion::end(seq); }
|
||||
typename mpl::if_<traits::is_view<Sequence>, Sequence, Sequence&>::type seq;
|
||||
transform_type f;
|
||||
|
@ -35,7 +35,7 @@ namespace boost { namespace fusion
|
||||
typedef typename traits::category_of<first_type>::type category;
|
||||
typedef F transform_type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
transform_view_iterator(First const& in_first, F const& in_f)
|
||||
: first(converter::call(in_first)), f(in_f) {}
|
||||
|
||||
@ -62,7 +62,7 @@ namespace boost { namespace fusion
|
||||
typedef typename traits::category_of<first1_type>::type category;
|
||||
typedef F transform_type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR 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) {}
|
||||
|
||||
|
@ -34,7 +34,7 @@ namespace boost { namespace fusion {
|
||||
};
|
||||
|
||||
template<typename It>
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
typename result<poly_advance(It)>::type
|
||||
operator()(const It& it) const
|
||||
{
|
||||
@ -57,7 +57,7 @@ namespace boost { namespace fusion {
|
||||
typedef zip_view_iterator<
|
||||
typename result_of::transform<typename It::iterators, detail::poly_advance<N> >::type> type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(It const& it)
|
||||
{
|
||||
|
@ -44,7 +44,7 @@ namespace boost { namespace fusion
|
||||
};
|
||||
|
||||
template<typename Seq>
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
typename result<poly_at(Seq&)>::type
|
||||
operator()(Seq& seq) const
|
||||
{
|
||||
@ -52,14 +52,14 @@ namespace boost { namespace fusion
|
||||
}
|
||||
|
||||
template<typename Seq>
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
typename result<poly_at(Seq const&)>::type
|
||||
operator()(Seq const& seq) const
|
||||
{
|
||||
return fusion::at<N>(seq);
|
||||
}
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
unused_type operator()(unused_type const&) const
|
||||
{
|
||||
return unused_type();
|
||||
@ -82,7 +82,7 @@ namespace boost { namespace fusion
|
||||
typename result_of::transform<
|
||||
typename Seq::sequences, detail::poly_at<N> >::type>::type type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Seq& seq)
|
||||
{
|
||||
|
@ -41,7 +41,7 @@ namespace boost { namespace fusion {
|
||||
};
|
||||
|
||||
template<typename Seq>
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
typename result<poly_begin(Seq&)>::type
|
||||
operator()(Seq& seq) const
|
||||
{
|
||||
@ -49,14 +49,14 @@ namespace boost { namespace fusion {
|
||||
}
|
||||
|
||||
template<typename Seq>
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
typename result<poly_begin(Seq const&)>::type
|
||||
operator()(Seq const& seq) const
|
||||
{
|
||||
return fusion::begin(seq);
|
||||
}
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
unused_type operator()(unused_type const&) const
|
||||
{
|
||||
return unused_type();
|
||||
@ -79,7 +79,7 @@ namespace boost { namespace fusion {
|
||||
typename result_of::transform<typename Sequence::sequences, detail::poly_begin>::type,
|
||||
typename Sequence::category> type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Sequence& sequence)
|
||||
{
|
||||
|
@ -43,14 +43,14 @@ namespace boost { namespace fusion {
|
||||
};
|
||||
|
||||
template<typename It>
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
typename result<poly_deref(It)>::type
|
||||
operator()(const It& it) const
|
||||
{
|
||||
return fusion::deref(it);
|
||||
}
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
unused_type operator()(unused_type const&) const
|
||||
{
|
||||
return unused_type();
|
||||
@ -72,7 +72,7 @@ namespace boost { namespace fusion {
|
||||
typedef typename result_of::as_vector<
|
||||
typename result_of::transform<typename It::iterators, detail::poly_deref>::type>::type type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(It const& it)
|
||||
{
|
||||
|
@ -70,7 +70,7 @@ namespace boost { namespace fusion {
|
||||
struct apply
|
||||
: detail::zip_view_iterator_distance<It1, It2>::type
|
||||
{
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static typename detail::zip_view_iterator_distance<It1, It2>::type
|
||||
call(It1 const& /*it1*/, It2 const& /*it2*/)
|
||||
{
|
||||
|
@ -55,7 +55,7 @@ namespace boost { namespace fusion {
|
||||
};
|
||||
|
||||
template<typename Seq>
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
typename result<endpoints(Seq&)>::type
|
||||
operator()(Seq& seq) const
|
||||
{
|
||||
@ -63,14 +63,14 @@ namespace boost { namespace fusion {
|
||||
}
|
||||
|
||||
template<typename Seq>
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
typename result<endpoints(Seq const&)>::type
|
||||
operator()(Seq const& seq) const
|
||||
{
|
||||
return fusion::advance<M>(fusion::begin(seq));
|
||||
}
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
unused_type operator()(unused_type const&) const
|
||||
{
|
||||
return unused_type();
|
||||
@ -93,7 +93,7 @@ namespace boost { namespace fusion {
|
||||
typename result_of::transform<typename Sequence::sequences, detail::endpoints<typename Sequence::size> >::type,
|
||||
typename Sequence::category> type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Sequence& sequence)
|
||||
{
|
||||
|
@ -42,14 +42,14 @@ namespace boost { namespace fusion {
|
||||
};
|
||||
|
||||
template<typename It>
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
typename result<poly_next(It)>::type
|
||||
operator()(const It& it) const
|
||||
{
|
||||
return fusion::next(it);
|
||||
}
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
unused_type operator()(unused_type const&) const
|
||||
{
|
||||
return unused_type();
|
||||
@ -72,7 +72,7 @@ namespace boost { namespace fusion {
|
||||
typename result_of::transform<typename Iterator::iterators, detail::poly_next>::type,
|
||||
typename Iterator::category> type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Iterator const& it)
|
||||
{
|
||||
|
@ -41,14 +41,14 @@ namespace boost { namespace fusion {
|
||||
};
|
||||
|
||||
template<typename It>
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
typename result<poly_prior(It)>::type
|
||||
operator()(const It& it) const
|
||||
{
|
||||
return fusion::prior(it);
|
||||
}
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
unused_type operator()(unused_type const&) const
|
||||
{
|
||||
return unused_type();
|
||||
@ -71,7 +71,7 @@ namespace boost { namespace fusion {
|
||||
typename result_of::transform<typename Iterator::iterators, detail::poly_prior>::type,
|
||||
typename Iterator::category> type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Iterator const& it)
|
||||
|
||||
|
@ -122,7 +122,7 @@ namespace boost { namespace fusion {
|
||||
typedef typename fusion::result_of::as_vector<Sequences>::type sequences;
|
||||
typedef typename detail::min_size<real_sequences>::type size;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
zip_view(
|
||||
const Sequences& seqs)
|
||||
: sequences_(seqs)
|
||||
|
@ -35,7 +35,7 @@ namespace boost { namespace fusion {
|
||||
typedef Traversal category;
|
||||
|
||||
template<typename InitSeq>
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
zip_view_iterator(
|
||||
const InitSeq& iterator_seq)
|
||||
: iterators_(iterator_seq)
|
||||
|
Reference in New Issue
Block a user