summaryrefslogtreecommitdiff
path: root/boost/fusion/view
diff options
context:
space:
mode:
Diffstat (limited to 'boost/fusion/view')
-rw-r--r--boost/fusion/view/detail/strictest_traversal.hpp2
-rw-r--r--boost/fusion/view/filter_view/detail/begin_impl.hpp2
-rw-r--r--boost/fusion/view/filter_view/detail/deref_data_impl.hpp2
-rw-r--r--boost/fusion/view/filter_view/detail/end_impl.hpp2
-rw-r--r--boost/fusion/view/filter_view/detail/next_impl.hpp2
-rw-r--r--boost/fusion/view/filter_view/filter_view.hpp6
-rw-r--r--boost/fusion/view/filter_view/filter_view_iterator.hpp11
-rw-r--r--boost/fusion/view/flatten_view/flatten_view.hpp26
-rw-r--r--boost/fusion/view/flatten_view/flatten_view_iterator.hpp61
-rw-r--r--boost/fusion/view/iterator_range/detail/at_impl.hpp2
-rw-r--r--boost/fusion/view/iterator_range/detail/begin_impl.hpp4
-rw-r--r--boost/fusion/view/iterator_range/detail/end_impl.hpp4
-rw-r--r--boost/fusion/view/iterator_range/detail/segmented_iterator_range.hpp28
-rw-r--r--boost/fusion/view/iterator_range/detail/segments_impl.hpp2
-rw-r--r--boost/fusion/view/iterator_range/iterator_range.hpp2
-rw-r--r--boost/fusion/view/joint_view/detail/begin_impl.hpp6
-rw-r--r--boost/fusion/view/joint_view/detail/deref_data_impl.hpp2
-rw-r--r--boost/fusion/view/joint_view/detail/end_impl.hpp2
-rw-r--r--boost/fusion/view/joint_view/detail/next_impl.hpp6
-rw-r--r--boost/fusion/view/joint_view/joint_view.hpp8
-rw-r--r--boost/fusion/view/joint_view/joint_view_iterator.hpp11
-rw-r--r--boost/fusion/view/nview/detail/advance_impl.hpp4
-rw-r--r--boost/fusion/view/nview/detail/at_impl.hpp6
-rw-r--r--boost/fusion/view/nview/detail/begin_impl.hpp2
-rw-r--r--boost/fusion/view/nview/detail/deref_impl.hpp2
-rw-r--r--boost/fusion/view/nview/detail/distance_impl.hpp2
-rw-r--r--boost/fusion/view/nview/detail/end_impl.hpp2
-rw-r--r--boost/fusion/view/nview/detail/next_impl.hpp2
-rw-r--r--boost/fusion/view/nview/detail/nview_impl.hpp2
-rw-r--r--boost/fusion/view/nview/detail/prior_impl.hpp2
-rw-r--r--boost/fusion/view/nview/nview.hpp11
-rw-r--r--boost/fusion/view/nview/nview_iterator.hpp12
-rw-r--r--boost/fusion/view/repetitive_view/detail/begin_impl.hpp2
-rw-r--r--boost/fusion/view/repetitive_view/detail/deref_impl.hpp2
-rw-r--r--boost/fusion/view/repetitive_view/detail/end_impl.hpp2
-rw-r--r--boost/fusion/view/repetitive_view/detail/next_impl.hpp6
-rw-r--r--boost/fusion/view/repetitive_view/repetitive_view.hpp2
-rw-r--r--boost/fusion/view/repetitive_view/repetitive_view_iterator.hpp19
-rw-r--r--boost/fusion/view/reverse_view/detail/advance_impl.hpp2
-rw-r--r--boost/fusion/view/reverse_view/detail/at_impl.hpp2
-rw-r--r--boost/fusion/view/reverse_view/detail/begin_impl.hpp2
-rw-r--r--boost/fusion/view/reverse_view/detail/deref_data_impl.hpp2
-rw-r--r--boost/fusion/view/reverse_view/detail/deref_impl.hpp2
-rw-r--r--boost/fusion/view/reverse_view/detail/distance_impl.hpp2
-rw-r--r--boost/fusion/view/reverse_view/detail/end_impl.hpp2
-rw-r--r--boost/fusion/view/reverse_view/detail/next_impl.hpp2
-rw-r--r--boost/fusion/view/reverse_view/detail/prior_impl.hpp2
-rw-r--r--boost/fusion/view/reverse_view/reverse_view.hpp6
-rw-r--r--boost/fusion/view/reverse_view/reverse_view_iterator.hpp11
-rw-r--r--boost/fusion/view/single_view/detail/advance_impl.hpp2
-rw-r--r--boost/fusion/view/single_view/detail/at_impl.hpp2
-rw-r--r--boost/fusion/view/single_view/detail/begin_impl.hpp2
-rw-r--r--boost/fusion/view/single_view/detail/deref_impl.hpp2
-rw-r--r--boost/fusion/view/single_view/detail/distance_impl.hpp2
-rw-r--r--boost/fusion/view/single_view/detail/end_impl.hpp2
-rw-r--r--boost/fusion/view/single_view/detail/next_impl.hpp2
-rw-r--r--boost/fusion/view/single_view/detail/prior_impl.hpp2
-rw-r--r--boost/fusion/view/single_view/single_view.hpp7
-rw-r--r--boost/fusion/view/single_view/single_view_iterator.hpp12
-rw-r--r--boost/fusion/view/transform_view/detail/advance_impl.hpp4
-rw-r--r--boost/fusion/view/transform_view/detail/at_impl.hpp4
-rw-r--r--boost/fusion/view/transform_view/detail/begin_impl.hpp4
-rw-r--r--boost/fusion/view/transform_view/detail/deref_impl.hpp4
-rw-r--r--boost/fusion/view/transform_view/detail/distance_impl.hpp4
-rw-r--r--boost/fusion/view/transform_view/detail/end_impl.hpp4
-rw-r--r--boost/fusion/view/transform_view/detail/next_impl.hpp4
-rw-r--r--boost/fusion/view/transform_view/detail/prior_impl.hpp4
-rw-r--r--boost/fusion/view/transform_view/transform_view.hpp16
-rw-r--r--boost/fusion/view/transform_view/transform_view_iterator.hpp16
-rw-r--r--boost/fusion/view/zip_view/detail/advance_impl.hpp4
-rw-r--r--boost/fusion/view/zip_view/detail/at_impl.hpp8
-rw-r--r--boost/fusion/view/zip_view/detail/begin_impl.hpp8
-rw-r--r--boost/fusion/view/zip_view/detail/deref_impl.hpp6
-rw-r--r--boost/fusion/view/zip_view/detail/distance_impl.hpp2
-rw-r--r--boost/fusion/view/zip_view/detail/end_impl.hpp8
-rw-r--r--boost/fusion/view/zip_view/detail/next_impl.hpp6
-rw-r--r--boost/fusion/view/zip_view/detail/prior_impl.hpp6
-rw-r--r--boost/fusion/view/zip_view/zip_view.hpp2
-rw-r--r--boost/fusion/view/zip_view/zip_view_iterator.hpp11
79 files changed, 287 insertions, 179 deletions
diff --git a/boost/fusion/view/detail/strictest_traversal.hpp b/boost/fusion/view/detail/strictest_traversal.hpp
index 4092ea4da6..9ad1f7aa85 100644
--- a/boost/fusion/view/detail/strictest_traversal.hpp
+++ b/boost/fusion/view/detail/strictest_traversal.hpp
@@ -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
diff --git a/boost/fusion/view/filter_view/detail/begin_impl.hpp b/boost/fusion/view/filter_view/detail/begin_impl.hpp
index 89f67d02ad..3ce439a41f 100644
--- a/boost/fusion/view/filter_view/detail/begin_impl.hpp
+++ b/boost/fusion/view/filter_view/detail/begin_impl.hpp
@@ -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)
{
diff --git a/boost/fusion/view/filter_view/detail/deref_data_impl.hpp b/boost/fusion/view/filter_view/detail/deref_data_impl.hpp
index ba8631f501..e0d9a0edb0 100644
--- a/boost/fusion/view/filter_view/detail/deref_data_impl.hpp
+++ b/boost/fusion/view/filter_view/detail/deref_data_impl.hpp
@@ -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)
{
diff --git a/boost/fusion/view/filter_view/detail/end_impl.hpp b/boost/fusion/view/filter_view/detail/end_impl.hpp
index fee9f6d459..1a2a5ba48d 100644
--- a/boost/fusion/view/filter_view/detail/end_impl.hpp
+++ b/boost/fusion/view/filter_view/detail/end_impl.hpp
@@ -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)
{
diff --git a/boost/fusion/view/filter_view/detail/next_impl.hpp b/boost/fusion/view/filter_view/detail/next_impl.hpp
index 0091e897ea..4f17455766 100644
--- a/boost/fusion/view/filter_view/detail/next_impl.hpp
+++ b/boost/fusion/view/filter_view/detail/next_impl.hpp
@@ -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)
{
diff --git a/boost/fusion/view/filter_view/filter_view.hpp b/boost/fusion/view/filter_view/filter_view.hpp
index dd710fabd1..db61cad60e 100644
--- a/boost/fusion/view/filter_view/filter_view.hpp
+++ b/boost/fusion/view/filter_view/filter_view.hpp
@@ -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;
diff --git a/boost/fusion/view/filter_view/filter_view_iterator.hpp b/boost/fusion/view/filter_view/filter_view_iterator.hpp
index 14aaa46005..f1b9f54de3 100644
--- a/boost/fusion/view/filter_view/filter_view_iterator.hpp
+++ b/boost/fusion/view/filter_view/filter_view_iterator.hpp
@@ -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))) {}
@@ -67,6 +67,15 @@ namespace boost { namespace fusion
};
}}
+#ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408
+namespace std
+{
+ template <typename Category, typename First, typename Last, typename Pred>
+ struct iterator_traits< ::boost::fusion::filter_iterator<Category, First, Last, Pred> >
+ { };
+}
+#endif
+
#endif
diff --git a/boost/fusion/view/flatten_view/flatten_view.hpp b/boost/fusion/view/flatten_view/flatten_view.hpp
index aa47240771..8e40158d1c 100644
--- a/boost/fusion/view/flatten_view/flatten_view.hpp
+++ b/boost/fusion/view/flatten_view/flatten_view.hpp
@@ -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&)
{
diff --git a/boost/fusion/view/flatten_view/flatten_view_iterator.hpp b/boost/fusion/view/flatten_view/flatten_view_iterator.hpp
index dfe613ac84..1ecf692822 100644
--- a/boost/fusion/view/flatten_view/flatten_view_iterator.hpp
+++ b/boost/fusion/view/flatten_view/flatten_view_iterator.hpp
@@ -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;
@@ -194,6 +204,15 @@ namespace boost { namespace fusion { namespace extension
};
}}}
+#ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408
+namespace std
+{
+ template <typename First, typename Base>
+ struct iterator_traits< ::boost::fusion::flatten_view_iterator<First, Base> >
+ { };
+}
+#endif
+
#endif
diff --git a/boost/fusion/view/iterator_range/detail/at_impl.hpp b/boost/fusion/view/iterator_range/detail/at_impl.hpp
index 0626ae2ec5..20f1758310 100644
--- a/boost/fusion/view/iterator_range/detail/at_impl.hpp
+++ b/boost/fusion/view/iterator_range/detail/at_impl.hpp
@@ -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)
{
diff --git a/boost/fusion/view/iterator_range/detail/begin_impl.hpp b/boost/fusion/view/iterator_range/detail/begin_impl.hpp
index e34b6ede30..7e00dec091 100644
--- a/boost/fusion/view/iterator_range/detail/begin_impl.hpp
+++ b/boost/fusion/view/iterator_range/detail/begin_impl.hpp
@@ -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)
{
diff --git a/boost/fusion/view/iterator_range/detail/end_impl.hpp b/boost/fusion/view/iterator_range/detail/end_impl.hpp
index 2428198cb8..b76aa91cd5 100644
--- a/boost/fusion/view/iterator_range/detail/end_impl.hpp
+++ b/boost/fusion/view/iterator_range/detail/end_impl.hpp
@@ -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)
{
diff --git a/boost/fusion/view/iterator_range/detail/segmented_iterator_range.hpp b/boost/fusion/view/iterator_range/detail/segmented_iterator_range.hpp
index 7dc4506c79..d35e580f8e 100644
--- a/boost/fusion/view/iterator_range/detail/segmented_iterator_range.hpp
+++ b/boost/fusion/view/iterator_range/detail/segmented_iterator_range.hpp
@@ -48,8 +48,8 @@ namespace boost { namespace fusion
}
template <typename Sequence, typename T>
- BOOST_FUSION_GPU_ENABLED
- typename
+ BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
+ inline typename
lazy_enable_if<
traits::is_sequence<Sequence>
, result_of::push_back<Sequence const, T>
@@ -57,8 +57,8 @@ namespace boost { namespace fusion
push_back(Sequence const& seq, T const& x);
template <typename Sequence, typename T>
- BOOST_FUSION_GPU_ENABLED
- typename
+ BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
+ inline typename
lazy_enable_if<
traits::is_sequence<Sequence>
, result_of::push_front<Sequence const, T>
@@ -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(
diff --git a/boost/fusion/view/iterator_range/detail/segments_impl.hpp b/boost/fusion/view/iterator_range/detail/segments_impl.hpp
index 9d570cf1f0..bbf4c45ad3 100644
--- a/boost/fusion/view/iterator_range/detail/segments_impl.hpp
+++ b/boost/fusion/view/iterator_range/detail/segments_impl.hpp
@@ -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));
diff --git a/boost/fusion/view/iterator_range/iterator_range.hpp b/boost/fusion/view/iterator_range/iterator_range.hpp
index f5aafd4a19..272abcd911 100644
--- a/boost/fusion/view/iterator_range/iterator_range.hpp
+++ b/boost/fusion/view/iterator_range/iterator_range.hpp
@@ -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)) {}
diff --git a/boost/fusion/view/joint_view/detail/begin_impl.hpp b/boost/fusion/view/joint_view/detail/begin_impl.hpp
index f58d129042..b7a961a7f2 100644
--- a/boost/fusion/view/joint_view/detail/begin_impl.hpp
+++ b/boost/fusion/view/joint_view/detail/begin_impl.hpp
@@ -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)
{
diff --git a/boost/fusion/view/joint_view/detail/deref_data_impl.hpp b/boost/fusion/view/joint_view/detail/deref_data_impl.hpp
index 02780d99d9..2d5f8317e1 100644
--- a/boost/fusion/view/joint_view/detail/deref_data_impl.hpp
+++ b/boost/fusion/view/joint_view/detail/deref_data_impl.hpp
@@ -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)
{
diff --git a/boost/fusion/view/joint_view/detail/end_impl.hpp b/boost/fusion/view/joint_view/detail/end_impl.hpp
index b9e0113815..0b4b9b0abd 100644
--- a/boost/fusion/view/joint_view/detail/end_impl.hpp
+++ b/boost/fusion/view/joint_view/detail/end_impl.hpp
@@ -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)
{
diff --git a/boost/fusion/view/joint_view/detail/next_impl.hpp b/boost/fusion/view/joint_view/detail/next_impl.hpp
index a3c066d1f3..a7d18757da 100644
--- a/boost/fusion/view/joint_view/detail/next_impl.hpp
+++ b/boost/fusion/view/joint_view/detail/next_impl.hpp
@@ -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)
{
diff --git a/boost/fusion/view/joint_view/joint_view.hpp b/boost/fusion/view/joint_view/joint_view.hpp
index 3ad3191420..676cbc54dd 100644
--- a/boost/fusion/view/joint_view/joint_view.hpp
+++ b/boost/fusion/view/joint_view/joint_view.hpp
@@ -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:
diff --git a/boost/fusion/view/joint_view/joint_view_iterator.hpp b/boost/fusion/view/joint_view/joint_view_iterator.hpp
index 9858474078..ddd1341ee1 100644
--- a/boost/fusion/view/joint_view/joint_view_iterator.hpp
+++ b/boost/fusion/view/joint_view/joint_view_iterator.hpp
@@ -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))
@@ -56,6 +56,15 @@ namespace boost { namespace fusion
};
}}
+#ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408
+namespace std
+{
+ template <typename Category, typename First, typename Last, typename Concat>
+ struct iterator_traits< ::boost::fusion::joint_view_iterator<Category, First, Last, Concat> >
+ { };
+}
+#endif
+
#endif
diff --git a/boost/fusion/view/nview/detail/advance_impl.hpp b/boost/fusion/view/nview/detail/advance_impl.hpp
index ad82983eac..7c74a386bb 100644
--- a/boost/fusion/view/nview/detail/advance_impl.hpp
+++ b/boost/fusion/view/nview/detail/advance_impl.hpp
@@ -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)
{
diff --git a/boost/fusion/view/nview/detail/at_impl.hpp b/boost/fusion/view/nview/detail/at_impl.hpp
index 45f9faf6f6..b9f41defcd 100644
--- a/boost/fusion/view/nview/detail/at_impl.hpp
+++ b/boost/fusion/view/nview/detail/at_impl.hpp
@@ -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);
diff --git a/boost/fusion/view/nview/detail/begin_impl.hpp b/boost/fusion/view/nview/detail/begin_impl.hpp
index ca600b9a16..bab5e221c9 100644
--- a/boost/fusion/view/nview/detail/begin_impl.hpp
+++ b/boost/fusion/view/nview/detail/begin_impl.hpp
@@ -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);
diff --git a/boost/fusion/view/nview/detail/deref_impl.hpp b/boost/fusion/view/nview/detail/deref_impl.hpp
index bbdb982528..85991021b6 100644
--- a/boost/fusion/view/nview/detail/deref_impl.hpp
+++ b/boost/fusion/view/nview/detail/deref_impl.hpp
@@ -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);
diff --git a/boost/fusion/view/nview/detail/distance_impl.hpp b/boost/fusion/view/nview/detail/distance_impl.hpp
index e3e5a9a086..a036300f77 100644
--- a/boost/fusion/view/nview/detail/distance_impl.hpp
+++ b/boost/fusion/view/nview/detail/distance_impl.hpp
@@ -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*/)
{
diff --git a/boost/fusion/view/nview/detail/end_impl.hpp b/boost/fusion/view/nview/detail/end_impl.hpp
index d36260dbb7..0a6efe560d 100644
--- a/boost/fusion/view/nview/detail/end_impl.hpp
+++ b/boost/fusion/view/nview/detail/end_impl.hpp
@@ -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);
diff --git a/boost/fusion/view/nview/detail/next_impl.hpp b/boost/fusion/view/nview/detail/next_impl.hpp
index 5193bfe655..3c30409647 100644
--- a/boost/fusion/view/nview/detail/next_impl.hpp
+++ b/boost/fusion/view/nview/detail/next_impl.hpp
@@ -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)
{
diff --git a/boost/fusion/view/nview/detail/nview_impl.hpp b/boost/fusion/view/nview/detail/nview_impl.hpp
index 6c7a3e21d1..e0d9335638 100644
--- a/boost/fusion/view/nview/detail/nview_impl.hpp
+++ b/boost/fusion/view/nview/detail/nview_impl.hpp
@@ -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)
{
diff --git a/boost/fusion/view/nview/detail/prior_impl.hpp b/boost/fusion/view/nview/detail/prior_impl.hpp
index 374b45f669..470c5bd323 100644
--- a/boost/fusion/view/nview/detail/prior_impl.hpp
+++ b/boost/fusion/view/nview/detail/prior_impl.hpp
@@ -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)
{
diff --git a/boost/fusion/view/nview/nview.hpp b/boost/fusion/view/nview/nview.hpp
index 45b7380bdf..2e257c81de 100644
--- a/boost/fusion/view/nview/nview.hpp
+++ b/boost/fusion/view/nview/nview.hpp
@@ -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())))
{}
diff --git a/boost/fusion/view/nview/nview_iterator.hpp b/boost/fusion/view/nview/nview_iterator.hpp
index c614cbbb92..aeaf4620b8 100644
--- a/boost/fusion/view/nview/nview_iterator.hpp
+++ b/boost/fusion/view/nview/nview_iterator.hpp
@@ -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;
@@ -54,6 +55,15 @@ namespace boost { namespace fusion
}}
+#ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408
+namespace std
+{
+ template <typename Sequence, typename Pos>
+ struct iterator_traits< ::boost::fusion::nview_iterator<Sequence, Pos> >
+ { };
+}
+#endif
+
#endif
diff --git a/boost/fusion/view/repetitive_view/detail/begin_impl.hpp b/boost/fusion/view/repetitive_view/detail/begin_impl.hpp
index 3da6b21dbf..9a27156c85 100644
--- a/boost/fusion/view/repetitive_view/detail/begin_impl.hpp
+++ b/boost/fusion/view/repetitive_view/detail/begin_impl.hpp
@@ -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);
diff --git a/boost/fusion/view/repetitive_view/detail/deref_impl.hpp b/boost/fusion/view/repetitive_view/detail/deref_impl.hpp
index c54ff38ef8..c96ef5eba5 100644
--- a/boost/fusion/view/repetitive_view/detail/deref_impl.hpp
+++ b/boost/fusion/view/repetitive_view/detail/deref_impl.hpp
@@ -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;
diff --git a/boost/fusion/view/repetitive_view/detail/end_impl.hpp b/boost/fusion/view/repetitive_view/detail/end_impl.hpp
index ca1c270f95..af1fa6ee44 100644
--- a/boost/fusion/view/repetitive_view/detail/end_impl.hpp
+++ b/boost/fusion/view/repetitive_view/detail/end_impl.hpp
@@ -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));
diff --git a/boost/fusion/view/repetitive_view/detail/next_impl.hpp b/boost/fusion/view/repetitive_view/detail/next_impl.hpp
index acefd513c0..fab7540814 100644
--- a/boost/fusion/view/repetitive_view/detail/next_impl.hpp
+++ b/boost/fusion/view/repetitive_view/detail/next_impl.hpp
@@ -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);
diff --git a/boost/fusion/view/repetitive_view/repetitive_view.hpp b/boost/fusion/view/repetitive_view/repetitive_view.hpp
index ab0a3b181f..32718e047e 100644
--- a/boost/fusion/view/repetitive_view/repetitive_view.hpp
+++ b/boost/fusion/view/repetitive_view/repetitive_view.hpp
@@ -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) {}
diff --git a/boost/fusion/view/repetitive_view/repetitive_view_iterator.hpp b/boost/fusion/view/repetitive_view/repetitive_view_iterator.hpp
index 7d5d139d66..74cc723e41 100644
--- a/boost/fusion/view/repetitive_view/repetitive_view_iterator.hpp
+++ b/boost/fusion/view/repetitive_view/repetitive_view_iterator.hpp
@@ -5,8 +5,8 @@
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
==============================================================================*/
-#if !defined(BOOST_FUSION_REPETITIVE_VIEW_ITERATOR_HPP_INCLUDED)
-#define BOOST_FUSION_REPETITIVE_VIEW_HPP_ITERATOR_INCLUDED
+#ifndef BOOST_FUSION_REPETITIVE_VIEW_ITERATOR_HPP_INCLUDED
+#define BOOST_FUSION_REPETITIVE_VIEW_ITERATOR_HPP_INCLUDED
#include <boost/fusion/support/config.hpp>
#include <boost/fusion/support/iterator_base.hpp>
@@ -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
@@ -53,5 +53,14 @@ namespace boost { namespace fusion
};
}}
+#ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408
+namespace std
+{
+ template <typename Sequence, typename Pos>
+ struct iterator_traits< ::boost::fusion::repetitive_view_iterator<Sequence, Pos> >
+ { };
+}
+#endif
+
#endif
diff --git a/boost/fusion/view/reverse_view/detail/advance_impl.hpp b/boost/fusion/view/reverse_view/detail/advance_impl.hpp
index 1304d0a9c2..42b3bd1908 100644
--- a/boost/fusion/view/reverse_view/detail/advance_impl.hpp
+++ b/boost/fusion/view/reverse_view/detail/advance_impl.hpp
@@ -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)
{
diff --git a/boost/fusion/view/reverse_view/detail/at_impl.hpp b/boost/fusion/view/reverse_view/detail/at_impl.hpp
index ebad8f3524..d1fc7715e8 100644
--- a/boost/fusion/view/reverse_view/detail/at_impl.hpp
+++ b/boost/fusion/view/reverse_view/detail/at_impl.hpp
@@ -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)
{
diff --git a/boost/fusion/view/reverse_view/detail/begin_impl.hpp b/boost/fusion/view/reverse_view/detail/begin_impl.hpp
index 2f20df57a4..913725ede4 100644
--- a/boost/fusion/view/reverse_view/detail/begin_impl.hpp
+++ b/boost/fusion/view/reverse_view/detail/begin_impl.hpp
@@ -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)
{
diff --git a/boost/fusion/view/reverse_view/detail/deref_data_impl.hpp b/boost/fusion/view/reverse_view/detail/deref_data_impl.hpp
index 20d381baba..e93b8fba9c 100644
--- a/boost/fusion/view/reverse_view/detail/deref_data_impl.hpp
+++ b/boost/fusion/view/reverse_view/detail/deref_data_impl.hpp
@@ -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)
{
diff --git a/boost/fusion/view/reverse_view/detail/deref_impl.hpp b/boost/fusion/view/reverse_view/detail/deref_impl.hpp
index 530921fe3a..9ea60d812d 100644
--- a/boost/fusion/view/reverse_view/detail/deref_impl.hpp
+++ b/boost/fusion/view/reverse_view/detail/deref_impl.hpp
@@ -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)
{
diff --git a/boost/fusion/view/reverse_view/detail/distance_impl.hpp b/boost/fusion/view/reverse_view/detail/distance_impl.hpp
index 3a5fdc6114..49436c26b6 100644
--- a/boost/fusion/view/reverse_view/detail/distance_impl.hpp
+++ b/boost/fusion/view/reverse_view/detail/distance_impl.hpp
@@ -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)
{
diff --git a/boost/fusion/view/reverse_view/detail/end_impl.hpp b/boost/fusion/view/reverse_view/detail/end_impl.hpp
index 1747d64f33..06602c0eda 100644
--- a/boost/fusion/view/reverse_view/detail/end_impl.hpp
+++ b/boost/fusion/view/reverse_view/detail/end_impl.hpp
@@ -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)
{
diff --git a/boost/fusion/view/reverse_view/detail/next_impl.hpp b/boost/fusion/view/reverse_view/detail/next_impl.hpp
index 1aaa692023..58c1f5f71a 100644
--- a/boost/fusion/view/reverse_view/detail/next_impl.hpp
+++ b/boost/fusion/view/reverse_view/detail/next_impl.hpp
@@ -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)
{
diff --git a/boost/fusion/view/reverse_view/detail/prior_impl.hpp b/boost/fusion/view/reverse_view/detail/prior_impl.hpp
index 4007ad4d97..69d18501cd 100644
--- a/boost/fusion/view/reverse_view/detail/prior_impl.hpp
+++ b/boost/fusion/view/reverse_view/detail/prior_impl.hpp
@@ -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)
{
diff --git a/boost/fusion/view/reverse_view/reverse_view.hpp b/boost/fusion/view/reverse_view/reverse_view.hpp
index 3b134d5f26..0a9aca27f1 100644
--- a/boost/fusion/view/reverse_view/reverse_view.hpp
+++ b/boost/fusion/view/reverse_view/reverse_view.hpp
@@ -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;
diff --git a/boost/fusion/view/reverse_view/reverse_view_iterator.hpp b/boost/fusion/view/reverse_view/reverse_view_iterator.hpp
index 9de2169ef1..a73e4eeafb 100644
--- a/boost/fusion/view/reverse_view/reverse_view_iterator.hpp
+++ b/boost/fusion/view/reverse_view/reverse_view_iterator.hpp
@@ -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)) {}
@@ -54,5 +54,14 @@ namespace boost { namespace fusion
};
}}
+#ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408
+namespace std
+{
+ template <typename First>
+ struct iterator_traits< ::boost::fusion::reverse_view_iterator<First> >
+ { };
+}
+#endif
+
#endif
diff --git a/boost/fusion/view/single_view/detail/advance_impl.hpp b/boost/fusion/view/single_view/detail/advance_impl.hpp
index 9dd9e4d712..5af22321b9 100644
--- a/boost/fusion/view/single_view/detail/advance_impl.hpp
+++ b/boost/fusion/view/single_view/detail/advance_impl.hpp
@@ -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)
{
diff --git a/boost/fusion/view/single_view/detail/at_impl.hpp b/boost/fusion/view/single_view/detail/at_impl.hpp
index b63497c8d2..6c4c7579b6 100644
--- a/boost/fusion/view/single_view/detail/at_impl.hpp
+++ b/boost/fusion/view/single_view/detail/at_impl.hpp
@@ -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)
{
diff --git a/boost/fusion/view/single_view/detail/begin_impl.hpp b/boost/fusion/view/single_view/detail/begin_impl.hpp
index 63e4292348..d6bca8f6b5 100644
--- a/boost/fusion/view/single_view/detail/begin_impl.hpp
+++ b/boost/fusion/view/single_view/detail/begin_impl.hpp
@@ -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)
{
diff --git a/boost/fusion/view/single_view/detail/deref_impl.hpp b/boost/fusion/view/single_view/detail/deref_impl.hpp
index ad50a41357..acb90d836b 100644
--- a/boost/fusion/view/single_view/detail/deref_impl.hpp
+++ b/boost/fusion/view/single_view/detail/deref_impl.hpp
@@ -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)
{
diff --git a/boost/fusion/view/single_view/detail/distance_impl.hpp b/boost/fusion/view/single_view/detail/distance_impl.hpp
index 73231b4152..9cd85fdc31 100644
--- a/boost/fusion/view/single_view/detail/distance_impl.hpp
+++ b/boost/fusion/view/single_view/detail/distance_impl.hpp
@@ -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*/)
{
diff --git a/boost/fusion/view/single_view/detail/end_impl.hpp b/boost/fusion/view/single_view/detail/end_impl.hpp
index 50a7c56240..d662ac246b 100644
--- a/boost/fusion/view/single_view/detail/end_impl.hpp
+++ b/boost/fusion/view/single_view/detail/end_impl.hpp
@@ -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)
{
diff --git a/boost/fusion/view/single_view/detail/next_impl.hpp b/boost/fusion/view/single_view/detail/next_impl.hpp
index d5e0ac8037..41c658f322 100644
--- a/boost/fusion/view/single_view/detail/next_impl.hpp
+++ b/boost/fusion/view/single_view/detail/next_impl.hpp
@@ -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)
{
diff --git a/boost/fusion/view/single_view/detail/prior_impl.hpp b/boost/fusion/view/single_view/detail/prior_impl.hpp
index c34e481a27..823f96e5a5 100644
--- a/boost/fusion/view/single_view/detail/prior_impl.hpp
+++ b/boost/fusion/view/single_view/detail/prior_impl.hpp
@@ -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)
{
diff --git a/boost/fusion/view/single_view/single_view.hpp b/boost/fusion/view/single_view/single_view.hpp
index 36c2c931c0..a4437902c1 100644
--- a/boost/fusion/view/single_view/single_view.hpp
+++ b/boost/fusion/view/single_view/single_view.hpp
@@ -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)
{
diff --git a/boost/fusion/view/single_view/single_view_iterator.hpp b/boost/fusion/view/single_view/single_view_iterator.hpp
index 128c1cae66..0f3e2744b5 100644
--- a/boost/fusion/view/single_view/single_view_iterator.hpp
+++ b/boost/fusion/view/single_view/single_view_iterator.hpp
@@ -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;
@@ -50,6 +51,15 @@ namespace boost { namespace fusion
};
}}
+#ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408
+namespace std
+{
+ template <typename SingleView, typename Pos>
+ struct iterator_traits< ::boost::fusion::single_view_iterator<SingleView, Pos> >
+ { };
+}
+#endif
+
#if defined (BOOST_MSVC)
# pragma warning(pop)
#endif
diff --git a/boost/fusion/view/transform_view/detail/advance_impl.hpp b/boost/fusion/view/transform_view/detail/advance_impl.hpp
index ae8a84ce63..12dfabec92 100644
--- a/boost/fusion/view/transform_view/detail/advance_impl.hpp
+++ b/boost/fusion/view/transform_view/detail/advance_impl.hpp
@@ -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)
{
diff --git a/boost/fusion/view/transform_view/detail/at_impl.hpp b/boost/fusion/view/transform_view/detail/at_impl.hpp
index 5c6dd8fb0d..d2045bc280 100644
--- a/boost/fusion/view/transform_view/detail/at_impl.hpp
+++ b/boost/fusion/view/transform_view/detail/at_impl.hpp
@@ -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));
diff --git a/boost/fusion/view/transform_view/detail/begin_impl.hpp b/boost/fusion/view/transform_view/detail/begin_impl.hpp
index 7c40505ae2..da3f763ab1 100644
--- a/boost/fusion/view/transform_view/detail/begin_impl.hpp
+++ b/boost/fusion/view/transform_view/detail/begin_impl.hpp
@@ -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)
{
diff --git a/boost/fusion/view/transform_view/detail/deref_impl.hpp b/boost/fusion/view/transform_view/detail/deref_impl.hpp
index 35dacbd1d7..646da57c22 100644
--- a/boost/fusion/view/transform_view/detail/deref_impl.hpp
+++ b/boost/fusion/view/transform_view/detail/deref_impl.hpp
@@ -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)
{
diff --git a/boost/fusion/view/transform_view/detail/distance_impl.hpp b/boost/fusion/view/transform_view/detail/distance_impl.hpp
index ecbc8c5dd0..644430559d 100644
--- a/boost/fusion/view/transform_view/detail/distance_impl.hpp
+++ b/boost/fusion/view/transform_view/detail/distance_impl.hpp
@@ -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)
diff --git a/boost/fusion/view/transform_view/detail/end_impl.hpp b/boost/fusion/view/transform_view/detail/end_impl.hpp
index 58e161b1f6..3a84e04093 100644
--- a/boost/fusion/view/transform_view/detail/end_impl.hpp
+++ b/boost/fusion/view/transform_view/detail/end_impl.hpp
@@ -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)
{
diff --git a/boost/fusion/view/transform_view/detail/next_impl.hpp b/boost/fusion/view/transform_view/detail/next_impl.hpp
index cebba59526..ce22d19edc 100644
--- a/boost/fusion/view/transform_view/detail/next_impl.hpp
+++ b/boost/fusion/view/transform_view/detail/next_impl.hpp
@@ -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)
{
diff --git a/boost/fusion/view/transform_view/detail/prior_impl.hpp b/boost/fusion/view/transform_view/detail/prior_impl.hpp
index 19c802c622..ed6d742eef 100644
--- a/boost/fusion/view/transform_view/detail/prior_impl.hpp
+++ b/boost/fusion/view/transform_view/detail/prior_impl.hpp
@@ -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)
{
diff --git a/boost/fusion/view/transform_view/transform_view.hpp b/boost/fusion/view/transform_view/transform_view.hpp
index d18f49c61c..4a6fc5b18c 100644
--- a/boost/fusion/view/transform_view/transform_view.hpp
+++ b/boost/fusion/view/transform_view/transform_view.hpp
@@ -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;
diff --git a/boost/fusion/view/transform_view/transform_view_iterator.hpp b/boost/fusion/view/transform_view/transform_view_iterator.hpp
index 0762228fca..ab40bd748f 100644
--- a/boost/fusion/view/transform_view/transform_view_iterator.hpp
+++ b/boost/fusion/view/transform_view/transform_view_iterator.hpp
@@ -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) {}
@@ -76,5 +76,17 @@ namespace boost { namespace fusion
};
}}
+#ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408
+namespace std
+{
+ template <typename First, typename F>
+ struct iterator_traits< ::boost::fusion::transform_view_iterator<First, F> >
+ { };
+ template <typename First1, typename First2, typename F>
+ struct iterator_traits< ::boost::fusion::transform_view_iterator2<First1, First2, F> >
+ { };
+}
+#endif
+
#endif
diff --git a/boost/fusion/view/zip_view/detail/advance_impl.hpp b/boost/fusion/view/zip_view/detail/advance_impl.hpp
index 17012ac8b6..69134d949f 100644
--- a/boost/fusion/view/zip_view/detail/advance_impl.hpp
+++ b/boost/fusion/view/zip_view/detail/advance_impl.hpp
@@ -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)
{
diff --git a/boost/fusion/view/zip_view/detail/at_impl.hpp b/boost/fusion/view/zip_view/detail/at_impl.hpp
index f92c981725..55c0fef177 100644
--- a/boost/fusion/view/zip_view/detail/at_impl.hpp
+++ b/boost/fusion/view/zip_view/detail/at_impl.hpp
@@ -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)
{
diff --git a/boost/fusion/view/zip_view/detail/begin_impl.hpp b/boost/fusion/view/zip_view/detail/begin_impl.hpp
index 32be2c7d33..75e1375134 100644
--- a/boost/fusion/view/zip_view/detail/begin_impl.hpp
+++ b/boost/fusion/view/zip_view/detail/begin_impl.hpp
@@ -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)
{
diff --git a/boost/fusion/view/zip_view/detail/deref_impl.hpp b/boost/fusion/view/zip_view/detail/deref_impl.hpp
index e9f091c3b5..df7e91ae12 100644
--- a/boost/fusion/view/zip_view/detail/deref_impl.hpp
+++ b/boost/fusion/view/zip_view/detail/deref_impl.hpp
@@ -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)
{
diff --git a/boost/fusion/view/zip_view/detail/distance_impl.hpp b/boost/fusion/view/zip_view/detail/distance_impl.hpp
index 8beaccca44..f306e1b4a3 100644
--- a/boost/fusion/view/zip_view/detail/distance_impl.hpp
+++ b/boost/fusion/view/zip_view/detail/distance_impl.hpp
@@ -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*/)
{
diff --git a/boost/fusion/view/zip_view/detail/end_impl.hpp b/boost/fusion/view/zip_view/detail/end_impl.hpp
index d57b08fbd7..28549cb7d9 100644
--- a/boost/fusion/view/zip_view/detail/end_impl.hpp
+++ b/boost/fusion/view/zip_view/detail/end_impl.hpp
@@ -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)
{
diff --git a/boost/fusion/view/zip_view/detail/next_impl.hpp b/boost/fusion/view/zip_view/detail/next_impl.hpp
index e9236b4200..4bcd90a5a5 100644
--- a/boost/fusion/view/zip_view/detail/next_impl.hpp
+++ b/boost/fusion/view/zip_view/detail/next_impl.hpp
@@ -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)
{
diff --git a/boost/fusion/view/zip_view/detail/prior_impl.hpp b/boost/fusion/view/zip_view/detail/prior_impl.hpp
index aa69229565..655b509237 100644
--- a/boost/fusion/view/zip_view/detail/prior_impl.hpp
+++ b/boost/fusion/view/zip_view/detail/prior_impl.hpp
@@ -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)
diff --git a/boost/fusion/view/zip_view/zip_view.hpp b/boost/fusion/view/zip_view/zip_view.hpp
index 4e807f732b..cf6f6d2716 100644
--- a/boost/fusion/view/zip_view/zip_view.hpp
+++ b/boost/fusion/view/zip_view/zip_view.hpp
@@ -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)
diff --git a/boost/fusion/view/zip_view/zip_view_iterator.hpp b/boost/fusion/view/zip_view/zip_view_iterator.hpp
index fec50e6f18..cf2d763011 100644
--- a/boost/fusion/view/zip_view/zip_view_iterator.hpp
+++ b/boost/fusion/view/zip_view/zip_view_iterator.hpp
@@ -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)
@@ -46,4 +46,13 @@ namespace boost { namespace fusion {
};
}}
+#ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408
+namespace std
+{
+ template <typename IteratorSequence, typename Traversal>
+ struct iterator_traits< ::boost::fusion::zip_view_iterator<IteratorSequence, Traversal> >
+ { };
+}
+#endif
+
#endif